package br.com.fsa.aplication.Gui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.fsa.aplication.Exception.ConectionException;

import br.com.fsa.aplication.Model.MotoristaVO;
import br.com.fsa.aplication.Services.MotoristaService;

@ManagedBean(name = "cadMotorista")
@SessionScoped
public class MotoristaMBean {

	private MotoristaService motoristaService = new MotoristaService();
	private List<MotoristaVO> motoristas = new ArrayList<MotoristaVO>();
	private MotoristaVO motorista = new MotoristaVO();

	private MotoristaVO motoristaSelected = new MotoristaVO();
	private boolean desabilitarExcluir = true;

	public MotoristaMBean() {
		try {
			motoristas = motoristaService.listar();
		} catch (ConectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public MotoristaVO getMotoristaSelected() {
		return motoristaSelected;

	}

	public void setMotoristaSelected(MotoristaVO motoristaSelected) {
		this.motoristaSelected = motoristaSelected;

	}

	public boolean getDesabilitarExcluir() {
		return desabilitarExcluir;

	}

	public void setDesabilitarExcluir(boolean desabilitarExcluir) {
		this.desabilitarExcluir = desabilitarExcluir;

	}

	public List<MotoristaVO> getMotoristas() {

		return motoristas;
	}

	public void setMotoristas(List<MotoristaVO> motoristas) {
		this.motoristas = motoristas;
	}

	public MotoristaVO getMotorista() {
		System.out.println("metodo getMotorista");

		return motorista;

	}

	public void setMotorista(MotoristaVO motorista) {
		System.out.println("metodo setMotorista");
		this.motorista = motorista;
	}

	public void save() {
		try {
			System.out.println("metodo salvar");

			HashMap dto = new HashMap();
			dto.put("objeto", motorista);
			dto = motoristaService.salvar(dto);
			if (dto.get("resposta").getClass().getSimpleName()
					.equals("MotoristaVO")) {
				motoristas = motoristaService.listar();
				FacesContext context = FacesContext.getCurrentInstance();
				context.addMessage(null, new FacesMessage("Salvo com Sucesso",
						"Motorista " + motorista.getNome()));
				limparCampos();
				System.out.println("persistencia");
			}

		} catch (ConectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void clean() {
		try {
			System.out.println("metodo excluir");
			HashMap dto = new HashMap();
			dto.put("objeto", getMotorista());
			motoristaService.remover(dto);
			limparCampos();
			motoristas = motoristaService.listar();
		} catch (ConectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/*
	 * Metodo inutilizado porque o Diego mudou logica DAO para saveOrUpdate
	 * public void update() { try { if (motorista.getNome() != null) {
	 * System.out.println("metodo editar"); HashMap dto = new HashMap();
	 * dto.put("objeto", getMotorista()); motoristaService.atualizar(dto);
	 * limparCampos(); motoristas = motoristaService.listar(); } } catch
	 * (ConectionException e) { // TODO Auto-generated catch block
	 * e.printStackTrace(); } }
	 */

	public void visualizarSelecionado() {

		System.out.println("metodo visualizarSelecionado");
		setMotorista(getMotoristaSelected());
		setDesabilitarExcluir(false);
	}

	public void limparCampos() {

		setMotorista(new MotoristaVO());
		setMotoristaSelected(new MotoristaVO());
		setDesabilitarExcluir(true);
	}

}
